一直以來默默做個窺屏的小透明,這一年我決定自己來參賽啦!先來介紹一下我的背景,我是一個目前在海外留學修讀計算機科學系的香港人。我是個很懶惰的人,一直想著要自學各種新技術,但是因為沒有動力的關係,遲遲都沒有實現,因此這次的IT鐵人賽其實是被我利用來逼自己努力的工具XD
成為程序員需要很大的勇氣。身邊的人都以為你是黑客特工,能隨便黑進別人的伺服器。父母覺得你不學無術,一天到晚在玩電腦。只有你自己知道,編碼就是30%時間花在編程上面,剩下的70%都在每天每夜地毯式搜索無處不在的bug和煩惱禿頭的問題。
你需要面對的是無止境的學習——程式開發不是說你完美掌握了一個編程語言,你就能寫出舉世無雙的程式。編程語言只是你的工具,更重要的是編程概念,比如說OOP、Multithreading等等,而這種概念用哪種語言來實現其實並不重要,因為語言的不同只會影響到文法,實現出來的功能是一樣的。你以為自己是在學不同國家的語言,但其實你只是學同一個國家的方言。所以當你見到有人很自豪地說自己完全學會了XX語言,你可以先翻個白眼,因為他們學會的,大概只是我們隨便google一下就能找到的“語言文法”。新概念每天都在誕生:一開始Relational Database用的好好的,結果不知道誰覺得數據之間的關係(Relation)在某些情況其實並不重要而發明了NoSQL,最後現在跑出來了只著重於數據之間的關係的Graph Database。你要學會的是“如何選擇最適合程式用途的數據庫”以及“如何跟數據庫互動”,至於用什麼語言來互動真的很重要嗎?
先舉個例子:
A妹:大俠,我的程式在加載來自數據庫的data時跑得太慢了,何以解救?
大俠:噢!你用了多線程來fetch data了沒?你這樣一次一次的fetch當然會慢啊!
A妹:對齁!
大俠:噢!如果不是經常更新的數據庫的話,你把數據放到內存(Cache)裡面就不用每次都從數據庫拿資料了啊!
A妹:對厚!謝謝大俠指教!
——當然現實中沒有大俠,只有懵懂的A妹。所以學習才會成為編程最重要的部分,只有學習後知道有”多線程“和”內存“的概念,才會想到引用到自己的程式裡面,至於要怎樣引用,谷歌大神幫到你。
我的文章主要是介紹(對我而言的)新技術/新概念,會比較著重於講述他們的用途(技術層面方面的),然後會實際操作使用一下。實作用的語言應該統一為Python,除非有個別情況。有必要會跟其他同類型的技術比較。打頭陣的將會是最近發展神速的數據庫們——Graph Database, Search Engine和Time Series Database。這個年代只會SQL是活不下去的!
技術STACK:
謝謝看到最後的你。